package com.MapTest;

import java.util.*;
import java.util.function.BiConsumer;

public class HashMapDemo1 {
    public static void main(String[] args) {
        //某个班级80名学生，现在需要组成秋游活动
        //班长提供了4个景点以此是（A，B,C,D )
        //每个学生只能选择一个景点，统计出最终哪个景点想去的人数最多

        //首先得模拟学生投票：
        //创建一个数组来存储景点ABCD
        String[] arr = {"A","B","C","D"};

        Random r = new Random();

        //创建一个集合用来存储学生投票后的结果：
        ArrayList<String> list = new ArrayList<>();
        

        for (int i = 0; i < 80; i++) {
            //生成随机数为0~3的值，存入索引中：
            int Index = r.nextInt(arr.length);
            list.add(arr[Index]);
        }

        //创建哈希map集合：
        HashMap<String,Integer> hm = new HashMap<String, Integer>();

        //遍历list集合：
        for (String s : list) {
            if(hm.containsKey(s)){
                //获取键中对象的值赋值给count计数：
                int count = hm.get(s);
                count++;
                //把新的次数再次添加到集合中：
                hm.put(s,count);

            }else {
                //没有重复，则添加入map集合，次数为1次
                hm.put(s,1);
            }
        }

        //遍历当前集合：
        hm.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String s, Integer integer) {
                System.out.println(s + " == " + integer);
            }
        });




        //获取键值对对象：
        Set<Map.Entry<String, Integer>> entries = hm.entrySet();
        int max = 0;
        for (Map.Entry<String, Integer> entry : entries) {
            if(entry.getValue() > max){
                max = entry.getValue();
            }
        }
        //获取到了最大值后
        for (Map.Entry<String, Integer> entry : entries) {
            if(entry.getValue() == max){
                System.out.println("选择： " + entry.getKey());
            }
        }


    }
}
